﻿(*   Copyright 2011 Alexander Omelchuk
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *)

namespace Lisp
  [<AutoOpen>]
  module public Resources =

    let kwNil = "NIL"
    let kwT   = "T"

    // error messages
    let isNotId = "{0} is not a symbol"
    let isNotList = "{0} is not a list"
    let isNotFun = "{0} is not a function name"
    let isConstant = "{0} is a constant, may not be used as a variable"
    let varHasNoValue = "Variable {0} has no value"
    let undefinedFun = "Undefined function {0}"
    let tooFewParams = "Too few parameters for special operator {0}"
    let tooManyParams = "Too many parameters for special operator {0}"
    let tooFewParamsFun = "Too few arguments given to {0}"
    let tooManyParamsFun = "Too many arguments given to {0}"
    let oddParams = "Odd number of arguments for special operator {0}"
    let varDefTooLong = "Variable definition {0} is too long"
    let illegalVarDef = "Illegal variable definition: {0}"
    let illegalFunDef = "Illegal function definition: {0}"
    let illegalLambdaList = "Illegal lambda list: {0}"
    let noBlockFound = "No block named {0} is currently visible"
    let noCatcherForTag = "No catcher for tag {0}"    
    let badPlacedLLKeyword = "Badly placed lambda list keyword {0}"
    let varSpecTooLong = "Variable specification {0} is too long"
    let tooManyRestArgs = "Too many &REST arguments"
    let varAfterAOK = "&ALLOW-OTHER-KEYS must be followed by &AUX or end of list"